package com.example.cinema;

import java.util.Date;


class ManagerService {
    // 影片管理
    public static void movieManage() {
        System.out.println("\n===== 影片管理 =====");
        System.out.println("1.添加影片  2.查看影片  3.返回上一级");
        System.out.print("请选择：");
        int choice = CinemaSystem.sc.nextInt();
        CinemaSystem.sc.nextLine();

        if (choice == 1) {
            // 添加影片
            System.out.print("请输入影片ID：");
            String id = CinemaSystem.sc.nextLine();
            System.out.print("请输入影片名称：");
            String name = CinemaSystem.sc.nextLine();
            System.out.print("请输入导演：");
            String director = CinemaSystem.sc.nextLine();
            System.out.print("请输入主演：");
            String actor = CinemaSystem.sc.nextLine();
            System.out.print("请输入时长（分钟）：");
            int duration = CinemaSystem.sc.nextInt();
            System.out.print("请输入评分（0-10）：");
            double score = CinemaSystem.sc.nextDouble();
            CinemaSystem.sc.nextLine();

            Movie movie = new Movie(id, name, director, actor, "暂无简介", duration, score);
            CinemaSystem.movies.add(movie);
            System.out.println("影片添加成功！");
        } else if (choice == 2) {
            // 查看影片
            System.out.println("\n===== 影片列表 =====");
            for (Movie m : CinemaSystem.movies) {
                System.out.println("名称：" + m.getName() + "，导演：" + m.getDirector() + "，评分：" + m.getScore());
            }
        }
    }

    // 排片管理
    public static void sessionManage() {
        System.out.println("\n===== 排片管理 =====");
        System.out.println("1.添加场次  2.查看场次  3.返回上一级");
        System.out.print("请选择：");
        int choice = CinemaSystem.sc.nextInt();
        CinemaSystem.sc.nextLine();

        if (choice == 1) {
            // 添加场次
            if (CinemaSystem.movies.isEmpty()) {
                System.out.println("请先添加影片！");
                return;
            }
            System.out.println("可选影片：");
            for (Movie m : CinemaSystem.movies) {
                System.out.println(m.getId() + "." + m.getName());
            }
            System.out.print("请选择影片ID：");
            String movieId = CinemaSystem.sc.nextLine();
            Movie movie = getMovieById(movieId);
            if (movie == null) {
                System.out.println("影片不存在！");
                return;
            }

            System.out.println("可选放映厅：" + CinemaSystem.halls.stream().map(Hall::getName).toList());
            System.out.print("请输入放映厅名称：");
            String hallName = CinemaSystem.sc.nextLine();
            Hall hall = getHallByName(hallName);
            if (hall == null) {
                System.out.println("放映厅不存在！");
                return;
            }

            System.out.print("请输入放映时间（格式：yyyy-MM-dd HH:mm）：");
            String timeStr = CinemaSystem.sc.nextLine();
            try {
                Date time = CinemaSystem.sdf.parse(timeStr);
                System.out.print("请输入票价：");
                double price = CinemaSystem.sc.nextDouble();
                CinemaSystem.sc.nextLine();

                Session session = new Session("S" + System.currentTimeMillis(), movie, hall, time, price);
                CinemaSystem.sessions.add(session);
                System.out.println("场次添加成功！");
            } catch (Exception e) {
                System.out.println("时间格式错误！");
            }
        } else if (choice == 2) {
            // 查看场次
            System.out.println("\n===== 场次列表 =====");
            for (Session s : CinemaSystem.sessions) {
                System.out.println("影片：" + s.getMovie().getName() + "，厅：" + s.getHall().getName() +
                        "，时间：" + CinemaSystem.sdf.format(s.getTime()) + "，票价：" + s.getPrice());
            }
        }
    }

    // 查看销售数据
    public static void showSales() {
        System.out.println("\n===== 今日销售数据 =====");
        double total = 0;
        for (Ticket t : CinemaSystem.tickets) {
            if (!t.isRefunded()) {
                total += t.getPrice();
            }
        }
        System.out.println("总售票数：" + CinemaSystem.tickets.size() + "，总销售额：" + total + "元");
    }

    // 工具方法：通过ID找影片
    private static Movie getMovieById(String id) {
        for (Movie m : CinemaSystem.movies) {
            if (m.getId().equals(id)) return m;
        }
        return null;
    }

    // 工具方法：通过名称找放映厅
    private static Hall getHallByName(String name) {
        for (Hall h : CinemaSystem.halls) {
            if (h.getName().equals(name)) return h;
        }
        return null;
    }
}